package com.storm.future.red.soviet.solider.factory;

import com.storm.future.red.soviet.solider.Boris;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;

/**
 * @author gu
 * @date 2020/3/3 11:21
 */
@Component
public class BorisFactoryBean implements FactoryBean<Boris> {

	/**
	 * 场上至多存在的唯一一个的鲍里斯
	 */
	private Boris boris;

	@Override
	public Boris getObject() {
		if (boris == null) {
			// 此处可能有多个getObject()同时进来
			synchronized (Boris.class) {
				// 此处最多同时一个人进来
				// 但是如果不加限制，每个进来的人都可以创建对象
				if (boris == null) {
					boris = new Boris();
				}
			}
		}
		return boris;
	}

	@Override
	public Class<?> getObjectType() {
		return getObject().getClass();
	}
}
